#ifndef __CARRAY_H__
#define __CARRAY_H__

#define _Bool unsigned short
typedef struct _Arr Arr;
typedef void* DATA;

Arr* ArrNew();
Arr* ArrAdd(Arr* const p, const DATA value);
void ArrClear(Arr* const p);
void ArrDelete(Arr*const p);
Arr * ArrRemove(Arr*const p, const DATA aim);
Arr * ArrRemove_if(Arr*const p, const DATA arg, _Bool (*con)(DATA, DATA));
/*convert p to void ** array and delete p*/
void ** ArrCPtr(Arr *const p);

#endif
